package com.mark.maven.ddd.domain;

import com.mark.maven.ddd.domain.vo.Contact;
import com.mark.maven.ddd.domain.vo.Customer;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.extern.jackson.Jacksonized;

import java.io.Serializable;
import java.util.Date;

@Getter
@Setter
@Builder
@Jacksonized
@NoArgsConstructor
@AllArgsConstructor
public class CreateOrderDomainRequest implements Serializable {
    /**
     * 订单编号
     * 用于唯一标识一个订单
     */
    private String orderNo;

    /**
     * 订单状态私有变量
     * 用于存储订单的当前状态，是一个字符串类型的数据
     * 通过将订单状态存储为字符串，可以方便地进行订单状态的更新和查询
     */
    private String orderStatus;

    /**
     * 订单创建时间
     * 记录订单何时被创建
     */
    private Date createTime;

    /**
     * 订单更新时间
     * 记录订单信息最后一次修改的时间
     */
    private Date updateTime;

    /**
     * 客户信息
     * 关联到该订单的客户，表示购买方
     */
    private Customer customer;

    /**
     * 发货人信息
     * 关联到该订单的发货人，表示货物的发送方
     */
    private Contact sender;

    /**
     * 收货人信息
     * 关联到该订单的收货人，表示货物的接收方
     */
    private Contact receiver;
}
